o Overview should define major attributes o General purpose register, single accumulator, stack machine, etc. o Word size o Number of registers o What instructions are able to access memory (only load and store)? o Does the block diagram have data & control paths to support all instructions? o Are there data or control paths in the block diagram that are never used? o Does the block diagram/data path show the widths for all paths? It is acceptable to define a default path width in a legend on the block diagram and label only the exceptions. Perhaps using a contrasting color (blue?) for control lines will aid in readability. Also, even though electrically a wire is not directional, please add arrow heads to indicate the direction of flow of data and control. o Is it necessary to latch ALU flags in a register? If so, is this done? Is the zero flag used directly from the ALU, but can the ALU operands change by the time the processor looks at the flag? o Are all flags that are generated actually used? o Are all required instructions documented? (Not all of the instruction categories listed below are required.) o Subroutine call and return o Ability to load immediate values (including full precision integers) o Shifting left and right, logical and arithmetic, more than one bit at a time o Ability to set and test bits o Ability to conditionally branch o Ability to address 64K bytes of memory o Ability to logically bit-wise complement a value o Ability to compare for inequality (i.e., <, >, <=, or >=)? o Special feature documented and designed into the project o Is extension of all immediates documented as either zero- or sign-? o If an overflow indication is generated, must document that integer representation is 2's-complement o If PC is incremented in the main ALU, might another Adder ALU for the PC make the computer run faster? o If PC-relative branches are implemented, might another Adder ALU for this purpose make the computer run faster? o There is no need for separate signed and unsigned arithmetic opcodes unless there is an exception mechanism implemented o Is the special feature or the basic design too ambitious? o Use "jump" name for non-PC-relative jumps and "branch" for PC-relative branches o Add a section to the document to describe the syntax accepted by the assembler o Describe accepted assembler directives o Describe other assembler features o pseudo-opcodes o how are label written? o what constitutes white-space? o are operands separated by commas? o what is the comment delimeter? o what kind of integral constants are supported? o decimal? o hexadecimal? o octal? o binary? o character? o does the assembler support strings for .ascii and/or .asciiz o what kind of integral expressions are supported?